package com.voxel.sense.infomsg.module.task.send;

import android.content.Intent;

import com.example.com.common.app.BaseContract;

import java.util.List;
import java.util.Map;

/**
 * @author ChenYiYao
 * @date 2018/5/14
 * des : 派发任务企业类
 */
public interface SendTaskContract {

    int SEND_TASK = 100;
    int WARM_TASK = 101;
    int ALTER_TASK = 200;

    interface View extends BaseContract.View<Presenter> {
        /**
         * 跳转用户列表
         *
         * @param list
         */
        void onUserList(List list);


        /**
         * 拉起化公司列列表
         *
         * @param datas
         */
        void onShowFirmList(List datas);

        /**
         * 拉起用户列表
         *
         * @param datas
         */
        void onShowUserList(List datas);


        /**
         * 初始化类型选项
         *
         * @param datas
         */
        void onShowTaskType(List datas, List indexData, Map<String, String> map, int type);

        /**
         * 初始化任务等级选项 已选择数据
         *
         * @param datas
         */
        void onShowTaskLevel(List datas, List indexData,Map<String, String> map, int type);

        /**
         * 更新选择的公司
         *
         * @param datas
         */
        void onRefreshSelectionFirms(List datas);

        /**
         * 更新选中的用户
         *
         * @param datas
         */
        void onRefreshSelectionUsers(List datas);

        /**
         * 派发成功
         */
        void onSubmitSuccess();

        /**
         * @param taskName          任务名称
         * @param timeEnd           任务结束时间
         * @param taskLevelPosition 任务级别列表中选中的级别所在index
         * @param levelDesc         任务级别描述文字
         * @param taskTypePosition  任务类型index
         * @param typeDesc          任务类型描述
         * @param firm              选中的公司
         * @param user              选中的用户
         * @param taskContent       任务内容
         */
        void onRefreshView(String taskName, String timeEnd, int taskLevelPosition, String levelDesc,
                           int taskTypePosition, String typeDesc, List firm, List user,
                           String taskContent);

        void onGetTaskInfoFailure(String msg);
    }

    interface Presenter extends BaseContract.Presenter {
        /**
         * 获取任务类型
         */
        void doGetTaskType(int type);

        /**
         * 获取任务级别
         */
        void doGetTaskLevel(int type);

        /**
         * 获取公司列表
         */
        void doGetFirmList();


        /**
         * 获取派发用户
         */
        void doGetUserList();

        /**
         * activity返回数据
         */
        void onActivityResult(int requestCode, int resultCode, Intent data);


        /**
         * 获取任务详情
         *
         * @param taskNumb 任务编号
         */
        void doLoadTaskDetailsInfo(String taskNumb);

        /**
         * @param name             任务名称
         * @param endTime          结束时间
         * @param TaskTypePosition 所选的任务类型索引位置
         * @param LevelPosition    任务等级索引位置
         * @param content          任务内容
         * @param firms            任务所属企业
         * @param user             执行人员
         */
        void doSubmitTask(String name, long endTime, int TaskTypePosition, int LevelPosition,
                          String content, List<String> firms, List<String> user);

        /**
         * @param name             任务名称
         * @param endTime          结束时间
         * @param taskTypePosition 所选的任务类型索引位置
         * @param levelPosition    任务等级索引位置
         * @param content          任务内容
         * @param user             执行人员
         * @param taskNumb         执行人员
         * @param taskId           任务id
         */
        void doAlterTask(String taskNumb, String taskId, String name, long endTime, int taskTypePosition, int levelPosition,
                         String content, List<String> user);
    }

}
